home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / ActiveX Controlls / NCTAudioEditor2 ActiveX DLL / NCTAudioEditor2.exe / {app} / Samples / TestBCBAudioEditor2 / Main.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2003-03-28  |  15.3 KB  |  455 lines

  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Main.h"
  7. #include "Info.h"
  8. #include "CueList.h"
  9. #include "Convert.h"
  10. #include "Devices.h"
  11. #include "Setup.h"
  12. #include "Vox.h"
  13. #include "Raw.h"
  14. #include "About.h"
  15. //---------------------------------------------------------------------------
  16. #pragma package(smart_init)
  17. #pragma link "NCTAUDIOEDITOR2Lib_OCX"
  18. #pragma resource "*.dfm"
  19. TfrmMain *frmMain;
  20. //---------------------------------------------------------------------------
  21. __fastcall TfrmMain::TfrmMain(TComponent* Owner)
  22.     : TForm(Owner)
  23. {
  24. }
  25. //---------------------------------------------------------------------------
  26. void __fastcall TfrmMain::btnOpenClick(TObject *Sender)
  27. {
  28.     if (OpenDialog1->Execute()){
  29.         if (ExtractFileExt(OpenDialog1->FileName).LowerCase() == ".vox") frmVox->ShowModal();
  30.         if (ExtractFileExt(OpenDialog1->FileName).LowerCase() == ".raw" || ExtractFileExt(OpenDialog1->FileName).LowerCase() == ".pcm") frmRaw->ShowModal();
  31.         AudioEditor1->Open(StringToOleStr(OpenDialog1->FileName),DEFAULT);
  32.         SetParam();
  33.     }
  34. }
  35. //---------------------------------------------------------------------------
  36. void __fastcall TfrmMain::btnContinueClick(TObject *Sender)
  37. {
  38.     AudioEditor1->Continue();
  39. }
  40. //---------------------------------------------------------------------------
  41. void __fastcall TfrmMain::btnPauseClick(TObject *Sender)
  42. {
  43.     AudioEditor1->Pause();
  44. }
  45. //---------------------------------------------------------------------------
  46. void __fastcall TfrmMain::btnZoomFullClick(TObject *Sender)
  47. {
  48.     AudioEditor1->ZoomFull();
  49. }
  50. //---------------------------------------------------------------------------
  51. void __fastcall TfrmMain::btnRecordClick(TObject *Sender)
  52. {
  53.     AudioEditor1->Record(RECORD_MIX);
  54. }
  55. //---------------------------------------------------------------------------
  56. void __fastcall TfrmMain::btnStopClick(TObject *Sender)
  57. {
  58.     AudioEditor1->Stop();
  59. }
  60. //---------------------------------------------------------------------------
  61. void __fastcall TfrmMain::btnPlayClick(TObject *Sender)
  62. {
  63.     AudioEditor1->Play(NORMALPLAY);
  64. }
  65. //---------------------------------------------------------------------------
  66. void __fastcall TfrmMain::btnPlayEndClick(TObject *Sender)
  67. {
  68.     AudioEditor1->Play(PLAYTOEND);
  69. }
  70. //---------------------------------------------------------------------------
  71. void __fastcall TfrmMain::btnPlayLoopClick(TObject *Sender)
  72. {
  73.     AudioEditor1->Play(PLAYLOOPED);
  74. }
  75. //---------------------------------------------------------------------------
  76. void __fastcall TfrmMain::btnUndoClick(TObject *Sender)
  77. {
  78.     AudioEditor1->Undo();
  79. }
  80. //---------------------------------------------------------------------------
  81. void __fastcall TfrmMain::btnRedoClick(TObject *Sender)
  82. {
  83.     AudioEditor1->Redo();
  84. }
  85. //---------------------------------------------------------------------------
  86. void __fastcall TfrmMain::btnCopyClick(TObject *Sender)
  87. {
  88.     AudioEditor1->Copy();
  89. }
  90. //---------------------------------------------------------------------------
  91. void __fastcall TfrmMain::btnCutClick(TObject *Sender)
  92. {
  93.     AudioEditor1->Cut();
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TfrmMain::btnPasteClick(TObject *Sender)
  97. {
  98.     AudioEditor1->Paste();
  99. }
  100. //---------------------------------------------------------------------------
  101. void __fastcall TfrmMain::btnPasteMixClick(TObject *Sender)
  102. {
  103.     AudioEditor1->Mix(50,50);
  104. }
  105. //---------------------------------------------------------------------------
  106. void __fastcall TfrmMain::btnNewClick(TObject *Sender)
  107. {
  108.     AudioEditor1->New(FQ_44_KHZ, STEREO);
  109. }
  110. //---------------------------------------------------------------------------
  111. void __fastcall TfrmMain::btnSaveClick(TObject *Sender)
  112. {
  113.     if (SaveDialog1->Execute()){
  114.         if (SaveDialog1->FilterIndex == 1) AudioEditor1->FileFormat->SetFormatFromMenu();
  115.         AudioEditor1->Save(StringToOleStr(SaveDialog1->FileName),false,DEFAULT);
  116.         OpenDialog1->FileName = SaveDialog1->FileName;
  117.         SetParam();
  118.     }
  119. }
  120. //---------------------------------------------------------------------------
  121.  
  122. void __fastcall TfrmMain::btnZoomInClick(TObject *Sender)
  123. {
  124.     AudioEditor1->ZoomIn();    
  125. }
  126. //---------------------------------------------------------------------------
  127.  
  128. void __fastcall TfrmMain::btnZoomOutClick(TObject *Sender)
  129. {
  130.     AudioEditor1->ZoomOut();
  131. }
  132. //---------------------------------------------------------------------------
  133.  
  134. void __fastcall TfrmMain::AudioEditor1Meter(TObject *Sender, long LevelLeft, long LevelRight)
  135. {
  136.     ProgressBar1->Position = LevelLeft;
  137.     ProgressBar2->Position = LevelRight;
  138. }
  139. //---------------------------------------------------------------------------
  140.  
  141. void __fastcall TfrmMain::AudioEditor1ScaleXClick(TObject *Sender)
  142. {
  143.     ShowMessage("Click Scale X");
  144. }
  145. //---------------------------------------------------------------------------
  146.  
  147. void __fastcall TfrmMain::AudioEditor1ScaleYClick(TObject *Sender)
  148. {
  149.     ShowMessage("Click Scale Y");
  150. }
  151. //---------------------------------------------------------------------------
  152.  
  153. void TfrmMain::SetPosition(void)
  154. {
  155.     StatusBar1->Panels->Items[3]->Text = AudioEditor1->Position->StartView;
  156.     StatusBar1->Panels->Items[4]->Text = AudioEditor1->Position->EndView;
  157.  
  158.     StatusBar1->Panels->Items[5]->Text = AudioEditor1->Position->StartSelect;
  159.     StatusBar1->Panels->Items[6]->Text = AudioEditor1->Position->EndSelect;
  160.     StatusBar1->Refresh();
  161. }
  162. //---------------------------------------------------------------------------
  163.  
  164. void TfrmMain::SetParam(void)
  165. {
  166.     StatusBar1->Panels->Items[0]->Text = OpenDialog1->FileName;
  167.     StatusBar1->Panels->Items[1]->Text = AudioEditor1->FileInfo->FormatString;
  168.     StatusBar1->Panels->Items[2]->Text = AudioEditor1->Position->TotalSamples;
  169.     ProgressBar1->Position = 0;
  170.     ProgressBar2->Position = 0;
  171.     SetPosition();
  172. }
  173. //---------------------------------------------------------------------------
  174. void __fastcall TfrmMain::FormShow(TObject *Sender)
  175. {
  176.     SetParam();    
  177. }
  178. //---------------------------------------------------------------------------
  179.  
  180. void __fastcall TfrmMain::AudioEditor1ChangePosition(TObject *Sender)
  181. {
  182.     SetPosition();    
  183. }
  184. //---------------------------------------------------------------------------
  185.  
  186. void __fastcall TfrmMain::btnDelayClick(TObject *Sender)
  187. {
  188.     AudioEditor1->Transform->Delay(120, 30, 10);
  189. }
  190. //---------------------------------------------------------------------------
  191.  
  192. void __fastcall TfrmMain::btnBPFClick(TObject *Sender)
  193. {
  194.     AudioEditor1->Transform->BandPassFilter(AudioEditor1->FileInfo->Frequency / 100, 100);
  195. }
  196. //---------------------------------------------------------------------------
  197.  
  198. void __fastcall TfrmMain::btnVibratoClick(TObject *Sender)
  199. {
  200.     AudioEditor1->Transform->Vibrato(25, 3, 0);
  201. }
  202. //---------------------------------------------------------------------------
  203.  
  204. void __fastcall TfrmMain::btnLSFClick(TObject *Sender)
  205. {
  206.     AudioEditor1->Transform->LowShelfFilter(AudioEditor1->FileInfo->Frequency / 200, -10, 100);
  207. }
  208. //---------------------------------------------------------------------------
  209.  
  210. void __fastcall TfrmMain::btnLPFClick(TObject *Sender)
  211. {
  212.     AudioEditor1->Transform->LowPassFilter(AudioEditor1->FileInfo->Frequency / 50, 50);
  213. }
  214. //---------------------------------------------------------------------------
  215.  
  216. void __fastcall TfrmMain::btnHSFClick(TObject *Sender)
  217. {
  218.     AudioEditor1->Transform->HighShelfFilter(AudioEditor1->FileInfo->Frequency / 100, -10, 100);
  219. }
  220. //---------------------------------------------------------------------------
  221.  
  222. void __fastcall TfrmMain::btnHPFClick(TObject *Sender)
  223. {
  224.     AudioEditor1->Transform->HighPassFilter(AudioEditor1->FileInfo->Frequency / 100, 100);
  225. }
  226. //---------------------------------------------------------------------------
  227.  
  228. void __fastcall TfrmMain::btnInserSilenceClick(TObject *Sender)
  229. {
  230.     AudioEditor1->Transform->InsertSilence(343);
  231. }
  232. //---------------------------------------------------------------------------
  233.  
  234. void __fastcall TfrmMain::btnNFClick(TObject *Sender)
  235. {
  236.     AudioEditor1->Transform->NotchFilter(50, 100);
  237. }
  238. //---------------------------------------------------------------------------
  239.  
  240. void __fastcall TfrmMain::btnFlangerClick(TObject *Sender)
  241. {
  242.     AudioEditor1->Transform->Flanger(50, 30, 10, 50, 5, 0);
  243. }
  244. //---------------------------------------------------------------------------
  245.  
  246. void __fastcall TfrmMain::btnAmplifyMinusClick(TObject *Sender)
  247. {
  248.     AudioEditor1->Transform->Amplify(60);
  249. }
  250. //---------------------------------------------------------------------------
  251.  
  252. void __fastcall TfrmMain::btnAmplifyPlusClick(TObject *Sender)
  253. {
  254.     AudioEditor1->Transform->Amplify(140);
  255. }
  256. //---------------------------------------------------------------------------
  257.  
  258. void __fastcall TfrmMain::btnDeleteSilenceClick(TObject *Sender)
  259. {
  260.     AudioEditor1->Transform->Silence();
  261. }
  262. //---------------------------------------------------------------------------
  263.  
  264. void __fastcall TfrmMain::btnInvertClick(TObject *Sender)
  265. {
  266.     AudioEditor1->Transform->Invert();
  267. }
  268. //---------------------------------------------------------------------------
  269.  
  270. void __fastcall TfrmMain::btnFadeOutClick(TObject *Sender)
  271. {
  272.     AudioEditor1->Transform->Fade(100, 0);
  273. }
  274. //---------------------------------------------------------------------------
  275.  
  276. void __fastcall TfrmMain::btnFadeInClick(TObject *Sender)
  277. {
  278.     AudioEditor1->Transform->Fade(0, 100);
  279. }
  280. //---------------------------------------------------------------------------
  281.  
  282. void __fastcall TfrmMain::btnNormalizeClick(TObject *Sender)
  283. {
  284.     AudioEditor1->Transform->Normalize(80, true);
  285. }
  286. //---------------------------------------------------------------------------
  287.  
  288. void __fastcall TfrmMain::btnFFTClick(TObject *Sender)
  289. {
  290.     PSafeArray FFT;
  291.     float kBass = -0.5;
  292.     float kTreble = 0.5;
  293.     float *pFFT;
  294.  
  295.     FFT = SafeArrayCreateVector(VT_R4,0,512);
  296.     pFFT = (float*)FFT->pvData;
  297.  
  298.     for (int i = 0; i< 512; i++) pFFT[i] = 1;
  299.     for (int i = 0; i< 100; i++) pFFT[i] = pFFT[i] + (1 - i / 100) * kBass;
  300.     for (int i = 100;  i<512; i++) pFFT[i] = pFFT[i] + ((i - 100) / 411) * kTreble;
  301.     
  302.     AudioEditor1->Transform->FFTFilter(&FFT);
  303.     SafeArrayDestroy(FFT);
  304. }
  305. //---------------------------------------------------------------------------
  306.  
  307. void __fastcall TfrmMain::btnAGCClick(TObject *Sender)
  308. {
  309.     AudioEditor1->Recorder->AGCEnabled = btnAGC->Down;    
  310. }
  311. //---------------------------------------------------------------------------
  312.  
  313.  
  314. void __fastcall TfrmMain::mnuSaveSelectAsClick(TObject *Sender)
  315. {
  316.     if (SaveDialog1->Execute()){
  317.         if (SaveDialog1->FilterIndex == 1) AudioEditor1->FileFormat->SetFormatFromMenu();
  318.         AudioEditor1->Save(StringToOleStr(SaveDialog1->FileName),true,DEFAULT);
  319.         SetParam();
  320.     }
  321. }
  322. //---------------------------------------------------------------------------
  323.  
  324. void __fastcall TfrmMain::mnuWaveFormViewClick(TObject *Sender)
  325. {
  326.     AudioEditor1->TypeView = WAVEFORM;
  327.     mnuWaveFormView->Checked = true;
  328. }
  329. //---------------------------------------------------------------------------
  330.  
  331. void __fastcall TfrmMain::mnuSpectralViewClick(TObject *Sender)
  332. {
  333.     AudioEditor1->TypeView = SPECTRAL;
  334.     mnuSpectralView->Checked = true;
  335. }
  336. //---------------------------------------------------------------------------
  337.  
  338. void __fastcall TfrmMain::mnuCopytoWindowsClipboardClick(TObject *Sender)
  339. {
  340.     AudioEditor1->CopyToClipboard();    
  341. }
  342. //---------------------------------------------------------------------------
  343.  
  344. void __fastcall TfrmMain::mnuPastefromWindowsClipboardClick(
  345.       TObject *Sender)
  346. {
  347.     AudioEditor1->PasteFromClipboard();    
  348. }
  349. //---------------------------------------------------------------------------
  350.  
  351. void __fastcall TfrmMain::nmuPasteFromFileClick(TObject *Sender)
  352. {
  353.     AnsiString fn = OpenDialog1->FileName;
  354.     if (OpenDialog1->Execute()) AudioEditor1->PasteFromFile(StringToOleStr(OpenDialog1->FileName));
  355.     OpenDialog1->FileName = fn;
  356. }
  357. //---------------------------------------------------------------------------
  358.  
  359. void __fastcall TfrmMain::mnuMixFromFileClick(TObject *Sender)
  360. {
  361.     AnsiString fn = OpenDialog1->FileName;
  362.     if (OpenDialog1->Execute()) AudioEditor1->MixFromFile(50,StringToOleStr(OpenDialog1->FileName),50);
  363.     OpenDialog1->FileName = fn;
  364. }
  365. //---------------------------------------------------------------------------
  366.  
  367. void __fastcall TfrmMain::mnuExitClick(TObject *Sender)
  368. {
  369.     Close();    
  370. }
  371. //---------------------------------------------------------------------------
  372.  
  373. void __fastcall TfrmMain::mnuStretchPlusClick(TObject *Sender)
  374. {
  375.     AudioEditor1->Transform->TimeStretch(120);
  376. }
  377. //---------------------------------------------------------------------------
  378.  
  379. void __fastcall TfrmMain::mnuStretchMinusClick(TObject *Sender)
  380. {
  381.     AudioEditor1->Transform->TimeStretch(80);
  382. }
  383. //---------------------------------------------------------------------------
  384.  
  385. void __fastcall TfrmMain::btnLChannelClick(TObject *Sender)
  386. {
  387.     AudioEditor1->Channels->Num = 1;
  388.     AudioEditor1->Channels->Visible = btnLChannel->Down;
  389.     AudioEditor1->Channels->Num = 2;
  390.     AudioEditor1->Channels->Visible = btnRChannel->Down;
  391. }
  392. //---------------------------------------------------------------------------
  393.  
  394. void __fastcall TfrmMain::mnuInfoListClick(TObject *Sender)
  395. {
  396.     frmInfo->ShowModal();    
  397. }
  398. //---------------------------------------------------------------------------
  399.  
  400. void __fastcall TfrmMain::mnuMarkerListClick(TObject *Sender)
  401. {
  402.     frmCueList->ShowModal();
  403. }
  404. //---------------------------------------------------------------------------
  405.  
  406. void __fastcall TfrmMain::mnuConvertSampleTypeClick(TObject *Sender)
  407. {
  408.     frmConvert->ShowModal();
  409. }
  410. //---------------------------------------------------------------------------
  411.  
  412. void __fastcall TfrmMain::mnuInputDeviceClick(TObject *Sender)
  413. {
  414.     frmDevices->Dev = frmMain->AudioEditor1->DeviceInput;
  415.     frmDevices->srcCap = "Select";
  416.     frmDevices->ShowModal();
  417. }
  418. //---------------------------------------------------------------------------
  419.  
  420. void __fastcall TfrmMain::mnuOutputDeviceClick(TObject *Sender)
  421. {
  422.     frmDevices->Dev = frmMain->AudioEditor1->DeviceOutput;
  423.     frmDevices->srcCap = "Mute";
  424.     frmDevices->ShowModal();
  425. }
  426. //---------------------------------------------------------------------------
  427.  
  428. void __fastcall TfrmMain::btnOptionsClick(TObject *Sender)
  429. {
  430.     frmOptions->ShowModal();    
  431. }
  432. //---------------------------------------------------------------------------
  433.  
  434. void __fastcall TfrmMain::mnuAboutClick(TObject *Sender)
  435. {
  436.     frmAbout->ShowModal();    
  437. }
  438. //---------------------------------------------------------------------------
  439.  
  440. void __fastcall TfrmMain::AudioEditor1BlockOperation(TObject *Sender,
  441.       short Percent)
  442. {
  443.     ProgressBar1->Position = Percent;
  444.     ProgressBar2->Position = Percent;
  445. }
  446. //---------------------------------------------------------------------------
  447.  
  448. void __fastcall TfrmMain::AudioEditor1EndOperation(TObject *Sender)
  449. {
  450.     ProgressBar1->Position = 0;
  451.     ProgressBar2->Position = 0;
  452. }
  453. //---------------------------------------------------------------------------
  454.  
  455.